package com.nl.model.consts;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;

/**
 * http状态码.
 *
 * @author breggor
 */
@Getter
@AllArgsConstructor
public enum HttpStatusEnum {

    /**
     * 请求成功.
     */
    OK("200", "success"),

    /**
     * 请求的地址不存在或者包含不支持的参数.
     */
    BAD_REQUEST("400", "请求的地址不存在或者包含不支持的参数"),

    /**
     * 请求未授权.
     */
    UNAUTHORIZED("401", "请求未授权"),

    /**
     * 被禁止访问.
     */
    FORBIDDEN("403", "被禁止访问"),

    /**
     * 404 没找到请求.
     */
    NOT_FOUND("404", "请求的资源不存在"),

    /**
     * 不支持当前请求方法.
     */
    METHOD_NOT_ALLOWED("405", "不支持当前请求方法"),

    /**
     * 不支持当前媒体类型.
     */
    UNSUPPORTED_MEDIA_TYPE("415", "不支持当前媒体类型"),

    /**
     * 服务器异常.
     */
    INTERNAL_SERVER_ERROR("500", "服务器内部错误"),

    /**
     * 服务器异常.
     */
    INTERNAL_SERVICE_ERROR("501", "业务异常");

    private String code;

    private String message;

    /**
     * 解析枚举.
     *
     * @param statusCode 编码
     * @return HttpStatusEnum
     */
    public static HttpStatusEnum resolve(final int statusCode) {
        for (HttpStatusEnum status : values()) {
            if (Objects.equals(status.code, statusCode)) {
                return status;
            }
        }
        return null;
    }
}
